﻿namespace X2OPC.Server.DA
{
    using System;
    using System.Runtime.InteropServices;
    using X2OPC.Core.DA;

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.AutoDispatch)]
    [ComSourceInterfaces(typeof(IOPCDataCallback))]
    public class OPCDAGroup: IOPCGroupStateMgt, IOPCGroupStateMgt2, IOPCPublicGroupStateMgt, IOPCSyncIO,
         IOPCSyncIO2,IOPCAsyncIO, IOPCAsyncIO2, IOPCAsyncIO3, IOPCItemMgt, IOPCItemDeadbandMgt, IOPCItemSamplingMgt ,IDisposable
    {

        public OPCDAGroup(OPCDAServer opcDaServer)
        {
           
        }

        /// <summary>
        /// 组名称
        /// </summary>
        public string GroupName { get; set; }

        /// <summary>
        /// 是否活动
        /// </summary>
        public bool Active { get; set; }

        /// <summary>
        /// 时间间隔句柄
        /// </summary>
        public int TimeBias { get; set; }

        /// <summary>
        /// 客户程序提供给组对象的句柄
        /// </summary>
        public int ClientGroup { get; set; }

        /// <summary>
        /// 服务端组对像 句柄
        /// </summary>
        public int ServerGroup { get; set; }

        /// <summary>
        /// 死区
        /// </summary>
        public float PercentDeadband { get; set; }        
        
        /// <summary>
        /// 语言
        /// </summary>
        public int LCID { get; set; }

        /// <summary>
        /// 组 更新率
        /// </summary>
        public int RevisedUpdateRate { get; set; }

        public int GetState(out int pUpdateRate, out bool pActive, out string ppName, out int pTimeBias, out float pPercentDeadband, out int pLCID, out int phClientGroup, out int phServerGroup)
        {
            throw new NotImplementedException();
        }

        public int SetState(int[] pRequestedUpdateRate, out int pRevisedUpdateRate, bool[] pActive, int[] pTimeBias, float[] pPercentDeadband, int[] pLCID, int[] phClientGroup)
        {
            throw new NotImplementedException();
        }

        public int SetName(string szName)
        {
            throw new NotImplementedException();
        }

        public int CloneGroup(string szName, ref Guid riid, out object ppUnk)
        {
            throw new NotImplementedException();
        }


        public int SetKeepAlive(int dwKeepAliveTime, out int pdwRevisedKeepAliveTime)
        {
            throw new NotImplementedException();
        }

        public int GetKeepAlive(out int pdwKeepAliveTime)
        {
            throw new NotImplementedException();
        }

        public void GetState(out int pPublic)
        {
            throw new NotImplementedException();
        }

        public void MoveToPublic()
        {
            throw new NotImplementedException();
        }

        public int Read(OPCDataSource dwSource, int dwCount, int[] phServer, out IntPtr ppItemValues, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int Write(int dwCount, int[] phServer, object[] pItemValues, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }


        public int ReadMaxAge(int dwCount, int[] phServer, int[] pdwMaxAge, out IntPtr ppValues, out IntPtr ppwQualities, out IntPtr ppftTimeStamps, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int WriteVQT(int dwCount, int[] phServer, IntPtr pItemValues, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int Read(int dwCount, int[] phServer, int dwTransactionID, out int pdwCancelID, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int Write(int dwCount, int[] phServer, object[] pItemValues, int dwTransactionID, out int pdwCancelID, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int Refresh2(OPCDataSource dwSource, int dwTransactionID, out int pdwCancelID)
        {
            throw new NotImplementedException();
        }

        public int Cancel2(int dwCancelID)
        {
            throw new NotImplementedException();
        }

        public int SetEnable(bool bEnable)
        {
            throw new NotImplementedException();
        }

        public int GetEnable(out bool pbEnable)
        {
            throw new NotImplementedException();
        }


        public int ReadMaxAge(int dwCount, int[] phServer, int[] pdwMaxAge, int dwTransactionID, out int pdwCancelID, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int WriteVQT(int dwCount, int[] phServer, IntPtr pItemValues, int dwTransactionID, out int pdwCancelID, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int RefreshMaxAge(int dwMaxAge, int dwTransactionID, out int pdwCancelID)
        {
            throw new NotImplementedException();
        }

        public int AddItems(int dwCount, IntPtr pItemArray, out IntPtr ppAddResults, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int ValidateItems(int dwCount, IntPtr pItemArray, bool bBlobUpdate, out IntPtr ppValidationResults, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int RemoveItems(int dwCount, int[] phServer, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int SetActiveState(int dwCount, int[] phServer, bool bActive, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int SetClientHandles(int dwCount, int[] phServer, int[] phClient, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int SetDatatypes(int dwCount, int[] phServer, IntPtr pRequestedDatatypes, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int CreateEnumerator(ref Guid riid, out object ppUnk)
        {
            throw new NotImplementedException();
        }

        public int SetItemDeadband(int dwCount, int[] phServer, float[] pPercentDeadband, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int GetItemDeadband(int dwCount, int[] phServer, out IntPtr ppPercentDeadband, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int ClearItemDeadband(int dwCount, int[] phServer, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public int SetItemSamplingRate(int dwCount, int[] phServer, int[] pdwRequestedSamplingRate, out IntPtr ppdwRevisedSamplingRate, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int GetItemSamplingRate(int dwCount, int[] phServer, out IntPtr ppdwSamplingRate, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int ClearItemSamplingRate(int dwCount, int[] phServer, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int SetItemBufferEnable(int dwCount, int[] phServer, bool[] pbEnable, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }

        public int GetItemBufferEnable(int dwCount, int[] phServer, out IntPtr ppbEnable, out IntPtr ppErrors)
        {
            throw new NotImplementedException();
        }
    }
}
